1. Field
The disclosure relates generally to a computer implemented method, a data processing system, and a computer program product for sending data packets in a system area network. More specifically, the disclosure relates to a computer implemented method, a data processing system, and a computer program product for sending STREAMS data in an Infiniband network.
2. Description of the Related Art
In a system area network (SAN), such as an Infiniband (IB) network, the hardware provides a message passing mechanism that can be used for input/output devices (I/O) and interprocess communications (IPC) between general computing nodes. Processes executing on devices access SAN message passing hardware by posting send/receive messages to send/receive work queues on a SAN channel adapter (CA). These processes also are referred to as “consumers.”
The send/receive work queues (WQ) are assigned to a consumer as a queue pair (QP). The messages can be sent over five different transport types: reliable connected (RC), reliable datagram (RD), unreliable connected (UC), unreliable datagram (UD), and raw datagram (RawD). Consumers retrieve the results of these messages from a completion queue (CQ) through SAN work completion (WC) queues. The source channel adapter takes care of segmenting outbound messages and sending them to the destination. The destination channel adapter takes care of reassembling inbound messages and placing them in the memory space designated by the destination's consumer.
Two channel adapter types are present in nodes of the SAN fabric: a host channel adapter (HCA) and a target channel adapter (TCA). The host channel adapter is used by general purpose computing nodes to access the SAN fabric. Consumers use SAN verbs to access host channel adapter functions. The software that interprets verbs and directly accesses the channel adapter is known as the channel interface (CI).
Target channel adapters (TCA) are used by nodes that are the subject of messages sent from host channel adapters. The target channel adapters serve a similar function as that of the host channel adapters in providing the target node an access point to the SAN fabric.
STREAMS is modular architecture for implementing full-duplex input/output between kernel or user space processes and device drivers for implementing character devices. Character devices are devices through which the system transmits data one character at a time. Character devices stream communication with devices, such as mice, keyboards, virtual terminals, and serial modems.
STREAMS defines standard interfaces for character input and output within the system kernel and between the kernel and the rest of the system. The associated mechanisms of the interfaces consists of a set of system calls, kernel resources, and kernel utility routines. The standard interface and open-ended mechanism enable modular, portable development, and easy integration of high-performance network services and components.
Using a combination of system calls, kernel routines, and kernel utilities, STREAMS passes data between a driver and the stream head in the form of messages. Messages that are passed from the stream head toward the driver are said to travel downstream while messages passed in the other direction travel upstream.
Software stacks used for communication over system area networks (SAN), such as an Infiniband (IB) network, do not directly support STREAMS based applications. Instead, a complex and inefficient data flow involving multiple intermediate layers is required to pass data from a STREAMS based application, over the Infiniband network, and finally to a device driver. A transport layer application interface that is independent of any transport provider, such as X/Open transport interface is first used to pass data from the STREAMS based applications through X/Open transport interface to a sockets layer. Using an upper layer networking protocol having access to the Infiniband stack, such as sockets direct protocol (SDP) data can then be passed from the sockets layer to Infiniband stack verbs. Only then can the Infiniband communication manager send STREAMS data from the Infiniband stack verbs to the adapter device driver and then finally to a host channel adapter.